/**
 * "Visual Paradigm: DO NOT MODIFY THIS FILE!"
 * 
 * This is an automatic generated file. It will be regenerated every time 
 * you generate persistence class.
 * 
 * Modifying its content may cause the program not work, or your work may lost.
 */

/**
 * Licensee: Universidad de Almeria
 * License Type: Purchased
 */
package foroindaltronia.bd;

import org.orm.PersistentException;

/**
 * ORM-Component Class
 */
public class BD_usuarios_registrados {
        public BD_usuarios_registrados() {
        }
        
        public boolean registrarUsuario(Usuario_registrado usuario)
        {
                if(!existeUsuario(usuario))
                {
                        foroindaltronia.bd.Usuario_registradoDAO.save(usuario);
                        return true;
                }
                else
                        return false;
        }
        
        public boolean existeUsuario(Usuario usuario)
        {
                boolean existe=false;
                try {
                        foroindaltronia.bd.Usuario[] listadoUsuarios = foroindaltronia.bd.UsuarioDAO.listUsuarioByQuery("Usuario = '"+usuario.getUsuario()+"'",null);
                        if(listadoUsuarios.length == 0)
                                existe = false;
                        else
                                existe = true;
                } catch (PersistentException e) {
                        e.printStackTrace();
                }
                return existe;
        }

        public Usuario iniciarSesion(Usuario usuario) {
                
                if(existeUsuario(usuario))
                {
                        try {
                                foroindaltronia.bd.Usuario[] listadoUsuarios = foroindaltronia.bd.UsuarioDAO.listUsuarioByQuery("Usuario = '"+usuario.getUsuario()+"' AND Contrasena = '"+usuario.getContrasena()+"'",null);
                                if(listadoUsuarios.length != 0)
                                        return listadoUsuarios[0];
                        } catch (PersistentException e) {
                                e.printStackTrace();
                        }
                }
                return null;
        }
        
        public void actualizarDatosUsuario(Usuario_registrado usuario, Usuario_registrado modificado)
        {
                foroindaltronia.bd.Usuario usuarioEnBD;
                try {
                        System.out.println("Quiere modificar");
                        usuarioEnBD = foroindaltronia.bd.UsuarioDAO.loadUsuarioByQuery("Usuario = '"+usuario.getUsuario()+"'",null);
                        System.out.println(usuarioEnBD.getUsuario());
                        usuarioEnBD.setNombre(modificado.getNombre());
                        usuarioEnBD.setApellidos(modificado.getApellidos());
                        usuarioEnBD.setEmail(modificado.getEmail());
                        if(usuario.getFotografia_perfil().getNombreArchivo().compareTo(modificado.getFotografia_perfil().getNombreArchivo())!=0)
                        	usuarioEnBD.setFotografia_perfil(modificado.getFotografia_perfil());
                        System.out.println("Hace los cambios");
                        foroindaltronia.bd.UsuarioDAO.save(usuarioEnBD);
                } catch (PersistentException e) {
                        e.printStackTrace();
                }
        }
        
        public void actualizarContrasenaUsuario(Usuario_registrado usuario, String contrasenaNueva) {
                foroindaltronia.bd.Usuario usuarioEnBD;
                try {
                        usuarioEnBD = foroindaltronia.bd.UsuarioDAO.loadUsuarioByQuery("Usuario = '"+usuario.getUsuario()+"'",null);
                        usuarioEnBD.setContrasena(contrasenaNueva);
                        System.out.println("Hace los cambios");
                        foroindaltronia.bd.UsuarioDAO.save(usuarioEnBD);
                } catch (PersistentException e) {
                        e.printStackTrace();
                }
        }

		public Usuario[] obtenerListado() {
			try {
				return foroindaltronia.bd.UsuarioDAO.listUsuarioByQuery("Contrasena <> '000000000000000000000000000000' AND Usuario <> 'Admin' AND Usuario <> 'Borrado'",null);
			} catch (PersistentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return null;
		}

		public Usuario convertirUsuarioAModerador(String nombreUsuario) {
			foroindaltronia.bd.Usuario usuario;
			try {
				usuario = foroindaltronia.bd.UsuarioDAO.loadUsuarioByQuery("Usuario = '"+nombreUsuario+"'",null);
				Moderador mode = (Moderador)usuario;
				//foroindaltronia.bd.UsuarioDAO.deleteAndDissociate(usuario);
				return usuario;
			} catch (PersistentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return null;
		}

		public Usuario getUsuarioPorNombre(String nombreUsuario) {
			foroindaltronia.bd.Usuario usuario;
			try {
				usuario = foroindaltronia.bd.UsuarioDAO.loadUsuarioByQuery("Usuario = '"+nombreUsuario+"'",null);
				return usuario;
			} catch (PersistentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return null;
		}

		public void darmeDeBaja(String usuario) {
			try {
				Usuario usu = foroindaltronia.bd.UsuarioDAO.loadUsuarioByORMID(usuario);
				usu.setContrasena("000000000000000000000000000000");
				if(usu instanceof Usuario_registrado)
					foroindaltronia.bd.Usuario_registradoDAO.save((Usuario_registrado)usu);
				else
					foroindaltronia.bd.ModeradorDAO.save((Moderador)usu);
			} catch (PersistentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
}